package com.muyu.payment.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.Map;

/**
 * 支付渠道配置
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "payment.channel")
public class PaymentChannelConfig {
    
    /**
     * 默认支付渠道
     */
    private String defaultChannel = "alipay";
    
    /**
     * 支付宝配置
     */
    private AlipayConfig alipay;
    
    /**
     * 微信支付配置
     */
    private WechatPayConfig wechatPay;
    
    /**
     * 支付宝配置类
     */
    @Data
    public static class AlipayConfig {
        /**
         * 应用ID
         */
        private String appId;
        
        /**
         * 应用私钥
         */
        private String privateKey;
        
        /**
         * 支付宝公钥
         */
        private String publicKey;
        
        /**
         * 签名类型
         */
        private String signType = "RSA2";
        
        /**
         * 支付宝网关
         */
        private String gateway = "https://openapi.alipay.com/gateway.do";
        
        /**
         * 异步通知地址
         */
        private String notifyUrl;
        
        /**
         * 同步返回地址
         */
        private String returnUrl;
        
        /**
         * 字符集
         */
        private String charset = "UTF-8";
        
        /**
         * 数据格式
         */
        private String format = "json";
    }
    
    /**
     * 微信支付配置类
     */
    @Data
    public static class WechatPayConfig {
        /**
         * 应用ID
         */
        private String appId;
        
        /**
         * 商户号
         */
        private String mchId;
        
        /**
         * API密钥
         */
        private String apiKey;
        
        /**
         * APIv3密钥
         */
        private String apiV3Key;
        
        /**
         * 证书路径
         */
        private String certPath;
        
        /**
         * 异步通知地址
         */
        private String notifyUrl;
        
        /**
         * 签名类型
         */
        private String signType = "MD5";
        
        /**
         * 微信支付API地址
         */
        private String apiUrl = "https://api.mch.weixin.qq.com";
    }
    
    /**
     * 获取指定支付渠道的配置
     *
     * @param channel 支付渠道
     * @return 配置信息
     */
    public Map<String, String> getChannelConfig(String channel) {
        // 这里可以添加获取配置的逻辑
        // 可以从数据库或配置文件中读取
        return null;
    }
}
